const URLS = {
  // 影院热映
  cinemaHitUrl: 'https://m.douban.com/rexxar/api/v2/subject_collection/movie_showing/items',
  // 近期热门
  recentHitsUrl: 'https://m.douban.com/rexxar/api/v2/subject_collection/movie_latest/items',
  // 免费在线
  freeOnlineUrl: 'https://m.douban.com/rexxar/api/v2/subject_collection/movie_free_stream/items',
  // 电影详情
  filmDetailUrl: 'https://m.douban.com/rexxar/api/v2/movie/',
  // 电影评论
  filmCommentUrl: 'https://m.douban.com/rexxar/api/v2/movie/',
  // 电影搜索
  hotSearchUrl: 'https://api.doubans.com/v2/search/movie/douban/details'
}

let cinemaHit = (query = {}) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: URLS.cinemaHitUrl, // 网络地址
      data: query, // 参数
      success: resolve, // 请求成功之后
      fail: reject // 请求失败之后
    })
  }).then(res => { // 请求成功之后
    if (res.statusCode === 200) {
      return res.data
    } else { // 否则转换
      return Promise.reject({
        message: res.errMsg
      })
    }
  }).catch(() => {
    wx.showToast({
      title: '影院热映请求失败',
      icon: 'none'
    })
  })
}

let recentHits = (query = {}) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: URLS.recentHitsUrl, // 网络地址
      data: query, // 参数
      success: resolve, // 请求成功之后
      fail: reject // 请求失败之后
    })
  }).then(res => { // 请求成功之后
    if (res.statusCode === 200) {
      return res.data
    } else { // 否则转换
      return Promise.reject({
        message: res.errMsg
      })
    }
  }).catch(() => {
    wx.showToast({
      title: '近期热门请求失败',
      icon: 'none'
    })
  })
}

let freeOnline = (query = {}) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: URLS.freeOnlineUrl, // 网络地址
      data: query, // 参数
      success: resolve, // 请求成功之后
      fail: reject // 请求失败之后
    })
  }).then(res => { // 请求成功之后
    if (res.statusCode === 200) {
      return res.data
    } else { // 否则转换
      return Promise.reject({
        message: res.errMsg
      })
    }
  }).catch(() => {
    wx.showToast({
      title: '免费在线请求失败',
      icon: 'none'
    })
  })
}

let filmDetail = (filmID) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: URLS.filmDetailUrl + filmID, // 网络地址
      success: resolve, // 请求成功之后
      fail: reject // 请求失败之后
    })
  }).then(res => { // 请求成功之后
    if (res.statusCode === 200) {
      return res.data
    } else { // 否则转换
      return Promise.reject({
        message: res.errMsg,
      })
    }
  }).catch(() => {
    wx.showToast({
      title: '该电影暂无数据',
      icon: 'none'
    })
  })
}

let filmComment = (filmID, query = {}) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: URLS.filmCommentUrl + filmID + '/interests', // 网络地址
      data: query,
      success: resolve, // 请求成功之后
      fail: reject // 请求失败之后
    })
  }).then(res => { // 请求成功之后
    if (res.statusCode === 200) {
      return res.data
    } else { // 否则转换
      return Promise.reject({
        message: res.errMsg
      })
    }
  }).catch(() => {
    wx.showToast({
      title: '电影短评获取失败',
      icon: 'none'
    })
  })
}

let hotSearch = (query = {}) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: URLS.hotSearchUrl,
      data: query,
      success: resolve,
      fail: reject
    })
  }).then(res => {
    if (res.statusCode === 200) {
      return res.data
    } else { // 否则转换
      return Promise.reject({
        message: res.errMsg
      })
    }
  }).catch(() => {
    wx.showToast({
      title: '搜索失败',
      icon: 'none'
    })
  })
}

module.exports = {
  cinemaHit,
  recentHits,
  freeOnline,
  filmDetail,
  filmComment,
  hotSearch
}